home *** CD-ROM | disk | FTP | other *** search
/ Young Minds / Young Minds Interactive CD-ROM.ISO / kriegspi / options.c < prev    next >
Encoding:
C/C++ Source or Header  |  1987-06-30  |  1.8 KB  |  69 lines

  1. #ifndef lint
  2. static char rcsid[] = "$Header: options.c,v 1.1 87/02/12 11:06:21 schoch Exp $";
  3. #endif
  4.  
  5. #include "externs.h"
  6. #include <strings.h>
  7.  
  8. dooptions()
  9. {
  10.     register i;
  11.     char *cp;
  12.     char optbuf[128];
  13.     u_char nopts[NOPTIONS];
  14.  
  15.     if (iamserver) {
  16.         if (fgets(optbuf, sizeof optbuf, inp) == NULL)
  17.             if (ferror(inp))
  18.                 error ("recv in dooptions");
  19.         if (cp = index(optbuf, '\n'))
  20.             *cp = '\0';
  21.         if (cp = index(optbuf, '\r'))
  22.             *cp = '\0';
  23.         for (i = 0; optbuf[i]; i++)
  24.             if (optbuf[i] >= '0' && optbuf[i] <= '9')
  25.                 nopts[i] = optbuf[i] - '0';
  26.             else
  27.                 nopts[i] = UNSET;
  28.         while (i < NOPTIONS)
  29.             nopts[i++] = UNSET;
  30.         for (i = 0; i < NOPTIONS; i++) {
  31.             if (option [i] == UNSET || nopts[i] == UNSET)
  32.                 nopts[i] = option [i] = option[i] + nopts[i] - UNSET;
  33.             if (option [i] == UNSET)
  34.                 if (i == COLOR)
  35.                     option [i] = nopts[i] = RANDOM;
  36.                 else
  37.                     option [i] = nopts[i] = TRUE;
  38.             else if (option [i] != nopts[i])
  39.                 option [i] = nopts[i] = RANDOM;
  40.             if (option [i] == RANDOM)
  41.                 option [i] = nopts[i] = random () & 01;
  42.         }
  43.         for (i = 0; i < NOPTIONS; i++)
  44.             optbuf[i] = nopts[i] + '0';
  45.         optbuf[i] = '\0';
  46.         fprintf(out, "%s\r\n", optbuf);
  47.     } else {
  48.         for (i = 0; i < NOPTIONS; i++)
  49.             nopts[i] = option [i];
  50.         if (nopts[COLOR] == WHITE || nopts[COLOR] == BLACK)
  51.             nopts[COLOR] = ! option [COLOR];
  52.         for (i = 0; i < NOPTIONS; i++)
  53.             optbuf[i] = nopts[i] + '0';
  54.         optbuf[i] = '\0';
  55.         fprintf(out, "%s\r\n", optbuf);
  56.         if (fgets(optbuf, sizeof optbuf, inp) == NULL)
  57.             if (errno != EINTR)
  58.                 error ("recv in dooptions");
  59.         if (cp = index(optbuf, '\n'))
  60.             *cp = '\0';
  61.         if (cp = index(optbuf, '\r'))
  62.             *cp = '\0';
  63.         for (i = 0; optbuf[i]; i++)
  64.             option[i] = optbuf[i] - '0';
  65.         option [COLOR] = !(optbuf[COLOR]-'0');
  66.     }
  67.     ourcolor = option [COLOR];
  68. }
  69.